{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Copyright &copy; 2012 Ondrej Martinsky, All rights reserved\n",
    "\n",
    "[www.quantandfinancial.com](http://www.quantandfinancial.com)\n",
    "# Treasury Yield Curve Bootstrapping"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Mathematical symbols used in this notebook\n",
    "\n",
    "| Symbol | Comment\n",
    "| -- | --\n",
    "| tr | Time to maturity\n",
    "| t | Time to maturity (interpolated)\n",
    "| yr | Yield to maturity\n",
    "| y | Yield to maturity (interpolated)\n",
    "| s | Bootstrapped spot rate"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using matplotlib backend: Qt4Agg\n",
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab\n",
    "%matplotlib inline\n",
    "pylab.rcParams['figure.figsize'] = (12, 6)\n",
    "\n",
    "import scipy.interpolate\n",
    "from pandas import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "bonds = read_csv('gilts_2012_09_19.csv', index_col=None, parse_dates=['maturity'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Calculate \"time to maturity\" column"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>epic</th>\n",
       "      <th>description</th>\n",
       "      <th>coupon</th>\n",
       "      <th>maturity</th>\n",
       "      <th>bid</th>\n",
       "      <th>ask</th>\n",
       "      <th>change</th>\n",
       "      <th>income yield</th>\n",
       "      <th>gross redemption yield</th>\n",
       "      <th>time to maturity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>TR13</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.50</td>\n",
       "      <td>2013-03-07</td>\n",
       "      <td>101.92</td>\n",
       "      <td>102.07</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>4.41</td>\n",
       "      <td>0.22</td>\n",
       "      <td>0.469444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>T813</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>8.00</td>\n",
       "      <td>2013-09-27</td>\n",
       "      <td>107.86</td>\n",
       "      <td>107.98</td>\n",
       "      <td>-0.03</td>\n",
       "      <td>7.41</td>\n",
       "      <td>0.23</td>\n",
       "      <td>1.036111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>TR14</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>2.25</td>\n",
       "      <td>2014-03-07</td>\n",
       "      <td>102.90</td>\n",
       "      <td>103.05</td>\n",
       "      <td>0.01</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.22</td>\n",
       "      <td>1.483333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>T514</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>5.00</td>\n",
       "      <td>2014-09-07</td>\n",
       "      <td>109.28</td>\n",
       "      <td>109.43</td>\n",
       "      <td>0.02</td>\n",
       "      <td>4.57</td>\n",
       "      <td>0.23</td>\n",
       "      <td>1.994444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>TR15</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>2.75</td>\n",
       "      <td>2015-01-22</td>\n",
       "      <td>105.57</td>\n",
       "      <td>105.68</td>\n",
       "      <td>0.05</td>\n",
       "      <td>2.60</td>\n",
       "      <td>0.33</td>\n",
       "      <td>2.375000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>T4T</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.75</td>\n",
       "      <td>2015-09-07</td>\n",
       "      <td>112.92</td>\n",
       "      <td>113.04</td>\n",
       "      <td>0.04</td>\n",
       "      <td>4.20</td>\n",
       "      <td>0.35</td>\n",
       "      <td>3.008333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>TY8</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>8.00</td>\n",
       "      <td>2015-12-07</td>\n",
       "      <td>124.39</td>\n",
       "      <td>124.55</td>\n",
       "      <td>0.04</td>\n",
       "      <td>6.43</td>\n",
       "      <td>0.34</td>\n",
       "      <td>3.261111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>TS16</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>2.00</td>\n",
       "      <td>2016-01-22</td>\n",
       "      <td>104.92</td>\n",
       "      <td>105.04</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1.91</td>\n",
       "      <td>0.49</td>\n",
       "      <td>3.388889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>T16</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.00</td>\n",
       "      <td>2016-09-07</td>\n",
       "      <td>113.44</td>\n",
       "      <td>113.55</td>\n",
       "      <td>0.08</td>\n",
       "      <td>3.52</td>\n",
       "      <td>0.56</td>\n",
       "      <td>4.025000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>TR17</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>8.75</td>\n",
       "      <td>2017-08-25</td>\n",
       "      <td>138.48</td>\n",
       "      <td>138.66</td>\n",
       "      <td>0.14</td>\n",
       "      <td>6.31</td>\n",
       "      <td>0.77</td>\n",
       "      <td>5.002778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>T18</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>5.00</td>\n",
       "      <td>2018-03-07</td>\n",
       "      <td>121.74</td>\n",
       "      <td>121.84</td>\n",
       "      <td>0.16</td>\n",
       "      <td>4.11</td>\n",
       "      <td>0.91</td>\n",
       "      <td>5.541667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>T19</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.50</td>\n",
       "      <td>2019-03-07</td>\n",
       "      <td>121.28</td>\n",
       "      <td>121.41</td>\n",
       "      <td>0.23</td>\n",
       "      <td>3.71</td>\n",
       "      <td>1.07</td>\n",
       "      <td>6.555556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>TR19</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>3.75</td>\n",
       "      <td>2019-09-07</td>\n",
       "      <td>116.50</td>\n",
       "      <td>117.13</td>\n",
       "      <td>0.26</td>\n",
       "      <td>3.21</td>\n",
       "      <td>1.22</td>\n",
       "      <td>7.066667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>TS20</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.75</td>\n",
       "      <td>2020-03-07</td>\n",
       "      <td>124.24</td>\n",
       "      <td>124.36</td>\n",
       "      <td>0.28</td>\n",
       "      <td>3.82</td>\n",
       "      <td>1.32</td>\n",
       "      <td>7.572222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>TR20</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>3.75</td>\n",
       "      <td>2020-09-07</td>\n",
       "      <td>117.25</td>\n",
       "      <td>117.50</td>\n",
       "      <td>0.32</td>\n",
       "      <td>3.19</td>\n",
       "      <td>1.43</td>\n",
       "      <td>8.083333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>TR21</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>8.00</td>\n",
       "      <td>2021-06-07</td>\n",
       "      <td>152.25</td>\n",
       "      <td>153.61</td>\n",
       "      <td>0.42</td>\n",
       "      <td>5.23</td>\n",
       "      <td>1.50</td>\n",
       "      <td>8.841667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>TY21</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>3.75</td>\n",
       "      <td>2021-09-07</td>\n",
       "      <td>117.62</td>\n",
       "      <td>117.77</td>\n",
       "      <td>0.38</td>\n",
       "      <td>3.19</td>\n",
       "      <td>1.62</td>\n",
       "      <td>9.097222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>TR22</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.00</td>\n",
       "      <td>2022-03-07</td>\n",
       "      <td>119.92</td>\n",
       "      <td>120.12</td>\n",
       "      <td>0.41</td>\n",
       "      <td>3.33</td>\n",
       "      <td>1.70</td>\n",
       "      <td>9.600000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>TR25</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>5.00</td>\n",
       "      <td>2025-03-07</td>\n",
       "      <td>131.89</td>\n",
       "      <td>132.19</td>\n",
       "      <td>0.52</td>\n",
       "      <td>3.79</td>\n",
       "      <td>2.07</td>\n",
       "      <td>12.644444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>TR27</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.25</td>\n",
       "      <td>2027-12-07</td>\n",
       "      <td>123.78</td>\n",
       "      <td>124.33</td>\n",
       "      <td>0.58</td>\n",
       "      <td>3.43</td>\n",
       "      <td>2.36</td>\n",
       "      <td>15.436111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>TR28</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>6.00</td>\n",
       "      <td>2028-12-07</td>\n",
       "      <td>148.21</td>\n",
       "      <td>148.26</td>\n",
       "      <td>0.68</td>\n",
       "      <td>4.05</td>\n",
       "      <td>2.39</td>\n",
       "      <td>16.452778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>TR30</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.75</td>\n",
       "      <td>2030-12-07</td>\n",
       "      <td>130.96</td>\n",
       "      <td>131.14</td>\n",
       "      <td>0.55</td>\n",
       "      <td>3.62</td>\n",
       "      <td>2.60</td>\n",
       "      <td>18.480556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>TR32</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.25</td>\n",
       "      <td>2032-06-07</td>\n",
       "      <td>122.93</td>\n",
       "      <td>123.08</td>\n",
       "      <td>0.54</td>\n",
       "      <td>3.46</td>\n",
       "      <td>2.73</td>\n",
       "      <td>20.002778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>T34</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.50</td>\n",
       "      <td>2034-09-07</td>\n",
       "      <td>126.09</td>\n",
       "      <td>126.18</td>\n",
       "      <td>0.58</td>\n",
       "      <td>3.57</td>\n",
       "      <td>2.89</td>\n",
       "      <td>22.286111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>T4Q</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.25</td>\n",
       "      <td>2036-03-07</td>\n",
       "      <td>121.46</td>\n",
       "      <td>121.71</td>\n",
       "      <td>0.53</td>\n",
       "      <td>3.50</td>\n",
       "      <td>2.97</td>\n",
       "      <td>23.805556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>TR38</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.75</td>\n",
       "      <td>2038-12-07</td>\n",
       "      <td>130.70</td>\n",
       "      <td>130.80</td>\n",
       "      <td>0.55</td>\n",
       "      <td>3.63</td>\n",
       "      <td>3.04</td>\n",
       "      <td>26.597222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>T39</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.25</td>\n",
       "      <td>2039-09-07</td>\n",
       "      <td>120.90</td>\n",
       "      <td>121.15</td>\n",
       "      <td>0.54</td>\n",
       "      <td>3.51</td>\n",
       "      <td>3.09</td>\n",
       "      <td>27.358333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>T40</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.25</td>\n",
       "      <td>2040-12-07</td>\n",
       "      <td>120.55</td>\n",
       "      <td>120.93</td>\n",
       "      <td>0.53</td>\n",
       "      <td>3.52</td>\n",
       "      <td>3.14</td>\n",
       "      <td>28.627778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>T42</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.50</td>\n",
       "      <td>2042-12-07</td>\n",
       "      <td>125.77</td>\n",
       "      <td>126.07</td>\n",
       "      <td>0.58</td>\n",
       "      <td>3.57</td>\n",
       "      <td>3.16</td>\n",
       "      <td>30.655556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>T46</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.25</td>\n",
       "      <td>2046-12-07</td>\n",
       "      <td>120.93</td>\n",
       "      <td>121.37</td>\n",
       "      <td>0.56</td>\n",
       "      <td>3.51</td>\n",
       "      <td>3.22</td>\n",
       "      <td>34.713889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>T49</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.25</td>\n",
       "      <td>2049-12-07</td>\n",
       "      <td>120.99</td>\n",
       "      <td>121.34</td>\n",
       "      <td>0.53</td>\n",
       "      <td>3.51</td>\n",
       "      <td>3.26</td>\n",
       "      <td>37.758333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>TR4Q</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.25</td>\n",
       "      <td>2055-12-07</td>\n",
       "      <td>122.49</td>\n",
       "      <td>122.90</td>\n",
       "      <td>0.55</td>\n",
       "      <td>3.46</td>\n",
       "      <td>3.27</td>\n",
       "      <td>43.844444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>TR60</td>\n",
       "      <td>Uk Gilt Treasury Stk</td>\n",
       "      <td>4.00</td>\n",
       "      <td>2060-01-22</td>\n",
       "      <td>117.60</td>\n",
       "      <td>118.06</td>\n",
       "      <td>0.51</td>\n",
       "      <td>3.39</td>\n",
       "      <td>3.26</td>\n",
       "      <td>48.030556</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    epic           description  coupon   maturity     bid     ask  change  \\\n",
       "0   TR13  Uk Gilt Treasury Stk    4.50 2013-03-07  101.92  102.07   -0.01   \n",
       "1   T813  Uk Gilt Treasury Stk    8.00 2013-09-27  107.86  107.98   -0.03   \n",
       "2   TR14  Uk Gilt Treasury Stk    2.25 2014-03-07  102.90  103.05    0.01   \n",
       "3   T514  Uk Gilt Treasury Stk    5.00 2014-09-07  109.28  109.43    0.02   \n",
       "4   TR15  Uk Gilt Treasury Stk    2.75 2015-01-22  105.57  105.68    0.05   \n",
       "5    T4T  Uk Gilt Treasury Stk    4.75 2015-09-07  112.92  113.04    0.04   \n",
       "6    TY8  Uk Gilt Treasury Stk    8.00 2015-12-07  124.39  124.55    0.04   \n",
       "7   TS16  Uk Gilt Treasury Stk    2.00 2016-01-22  104.92  105.04    0.07   \n",
       "8    T16  Uk Gilt Treasury Stk    4.00 2016-09-07  113.44  113.55    0.08   \n",
       "9   TR17  Uk Gilt Treasury Stk    8.75 2017-08-25  138.48  138.66    0.14   \n",
       "10   T18  Uk Gilt Treasury Stk    5.00 2018-03-07  121.74  121.84    0.16   \n",
       "11   T19  Uk Gilt Treasury Stk    4.50 2019-03-07  121.28  121.41    0.23   \n",
       "12  TR19  Uk Gilt Treasury Stk    3.75 2019-09-07  116.50  117.13    0.26   \n",
       "13  TS20  Uk Gilt Treasury Stk    4.75 2020-03-07  124.24  124.36    0.28   \n",
       "14  TR20  Uk Gilt Treasury Stk    3.75 2020-09-07  117.25  117.50    0.32   \n",
       "15  TR21  Uk Gilt Treasury Stk    8.00 2021-06-07  152.25  153.61    0.42   \n",
       "16  TY21  Uk Gilt Treasury Stk    3.75 2021-09-07  117.62  117.77    0.38   \n",
       "17  TR22  Uk Gilt Treasury Stk    4.00 2022-03-07  119.92  120.12    0.41   \n",
       "18  TR25  Uk Gilt Treasury Stk    5.00 2025-03-07  131.89  132.19    0.52   \n",
       "19  TR27  Uk Gilt Treasury Stk    4.25 2027-12-07  123.78  124.33    0.58   \n",
       "20  TR28  Uk Gilt Treasury Stk    6.00 2028-12-07  148.21  148.26    0.68   \n",
       "21  TR30  Uk Gilt Treasury Stk    4.75 2030-12-07  130.96  131.14    0.55   \n",
       "22  TR32  Uk Gilt Treasury Stk    4.25 2032-06-07  122.93  123.08    0.54   \n",
       "23   T34  Uk Gilt Treasury Stk    4.50 2034-09-07  126.09  126.18    0.58   \n",
       "24   T4Q  Uk Gilt Treasury Stk    4.25 2036-03-07  121.46  121.71    0.53   \n",
       "25  TR38  Uk Gilt Treasury Stk    4.75 2038-12-07  130.70  130.80    0.55   \n",
       "26   T39  Uk Gilt Treasury Stk    4.25 2039-09-07  120.90  121.15    0.54   \n",
       "27   T40  Uk Gilt Treasury Stk    4.25 2040-12-07  120.55  120.93    0.53   \n",
       "28   T42  Uk Gilt Treasury Stk    4.50 2042-12-07  125.77  126.07    0.58   \n",
       "29   T46  Uk Gilt Treasury Stk    4.25 2046-12-07  120.93  121.37    0.56   \n",
       "30   T49  Uk Gilt Treasury Stk    4.25 2049-12-07  120.99  121.34    0.53   \n",
       "31  TR4Q  Uk Gilt Treasury Stk    4.25 2055-12-07  122.49  122.90    0.55   \n",
       "32  TR60  Uk Gilt Treasury Stk    4.00 2060-01-22  117.60  118.06    0.51   \n",
       "\n",
       "    income yield  gross redemption yield  time to maturity  \n",
       "0           4.41                    0.22          0.469444  \n",
       "1           7.41                    0.23          1.036111  \n",
       "2           2.18                    0.22          1.483333  \n",
       "3           4.57                    0.23          1.994444  \n",
       "4           2.60                    0.33          2.375000  \n",
       "5           4.20                    0.35          3.008333  \n",
       "6           6.43                    0.34          3.261111  \n",
       "7           1.91                    0.49          3.388889  \n",
       "8           3.52                    0.56          4.025000  \n",
       "9           6.31                    0.77          5.002778  \n",
       "10          4.11                    0.91          5.541667  \n",
       "11          3.71                    1.07          6.555556  \n",
       "12          3.21                    1.22          7.066667  \n",
       "13          3.82                    1.32          7.572222  \n",
       "14          3.19                    1.43          8.083333  \n",
       "15          5.23                    1.50          8.841667  \n",
       "16          3.19                    1.62          9.097222  \n",
       "17          3.33                    1.70          9.600000  \n",
       "18          3.79                    2.07         12.644444  \n",
       "19          3.43                    2.36         15.436111  \n",
       "20          4.05                    2.39         16.452778  \n",
       "21          3.62                    2.60         18.480556  \n",
       "22          3.46                    2.73         20.002778  \n",
       "23          3.57                    2.89         22.286111  \n",
       "24          3.50                    2.97         23.805556  \n",
       "25          3.63                    3.04         26.597222  \n",
       "26          3.51                    3.09         27.358333  \n",
       "27          3.52                    3.14         28.627778  \n",
       "28          3.57                    3.16         30.655556  \n",
       "29          3.51                    3.22         34.713889  \n",
       "30          3.51                    3.26         37.758333  \n",
       "31          3.46                    3.27         43.844444  \n",
       "32          3.39                    3.26         48.030556  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "current_date = datetime(2012, 9, 19)\n",
    "ttm = [(maturity - current_date).days / 360 for maturity in bonds['maturity']]\n",
    "bonds['time to maturity'] = ttm\n",
    "bonds"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Import Time value of money calculator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import tvm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Calculate yield curve\n",
    "Calculated YTMs doesn't necessarily correspond to those quoted in data file (source: Bondscape.net), due to accrued interest and a fact that coupon payment are bound to some specific calendar date, not necessarily, one semiannually.\n",
    "\n",
    "_Please note that source data from BondScape.net already contains Gross Redemption Yield, which is not used for the sake of this example (but corresponds to the yield calculated using time-value-of-money calculator_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "tr, yr = [], []\n",
    "current_date = datetime(2012, 9, 19)\n",
    "for i, bond in bonds.iterrows():\n",
    "    ttm = bond['time to maturity']\n",
    "    price = (bond['bid'] + bond['ask']) / 2\n",
    "    freq = 2 # semiannually\n",
    "    ytm = tvm.TVM(n=ttm * freq, pv=-price, pmt=bond['coupon'] / freq, fv=100).calc_r() * freq\n",
    "    tr.append(ttm)\n",
    "    yr.append(ytm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Interpolation\n",
    "Interpolate on-the-run yield curve to get yields on node dates (1Y, 2Y, ...), so they can be used in bootstrapping"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "t = list(i for i in range(1, 41))\n",
    "y = []\n",
    "interp = scipy.interpolate.interp1d(tr, yr, bounds_error=False, fill_value=scipy.nan)\n",
    "for i in t:\n",
    "    value = float(interp(i))\n",
    "    if not scipy.isnan(value):\n",
    "        y.append(value)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Bootstrapping\n",
    "To bootstrap the yield curve, we will be building upon a fact that all bonds priced at par have coupon rate equal to the yield-to-maturity, as denoted in the following equation:\n",
    "\n",
    "$$ \\frac{C}{\\left ( 1+r \\right )^1} + \\frac{C}{\\left ( 1+r \\right )^2}+...+\\frac{1+C}{\\left ( 1+r \\right )^n} = 100 $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "s = []  # output array for spot rates\n",
    "for i in range(0, len(t)):  # calculate i-th spot rate\n",
    "    sum = 0\n",
    "    for j in range(0, i):  # by iterating through 0..i\n",
    "        sum += y[i] / (1 + s[j]) ** t[j]\n",
    "    value = ((1 + y[i]) / (1 - sum)) ** (1 / t[i]) - 1\n",
    "    s.append(value)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Display"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nJk2aEBUVRc+ePRkyZAgffPABpUqVOiWGpKQkWrVqRc+ePdm7dy+TJ0/mgQceYN26daf0GRMTw+jR\no1m4cKEn3uysX7+ebdu20blz59PGmfWzyLo9YcIE3nvvPRISErjvvvvYsGEDmzZt8rw+adIk7rzz\nTgCefPJJNm7cyE8//cTGjRuJj49n2LBhpz1/UaNBdSGx/7vlXDJ/Djvv/5DgKmV8HU6RoRpJ8UZ5\nId4oL/LOzBg1KpaEhNGMHBmTpz/1n00fe/fuJSQkBD+/U4ctNWvWZO/evZ7tZs2a0a5dOwDKly9/\nUtvp06fTvn17mjVrRunSpc84qHPOER0dTdmyZbn88stp2LAhq1evBuDKK6+kSZMmOOcICwvj3nvv\nZfHixTl+T8OHD2fjxo306tWLK664wmubOXPmULduXXr16oVzjoYNG9K5c2emTp16StupU6fSp08f\nLr30Us477zyio6OzPfe+ffuAjM/ubERFRVG/fn38/PwICAigQ4cOTJo0CYDffvuN9evX0759ewDe\nffddxowZQ+XKlalQoQIDBw70tC0uNKguDMzY3K0L/72yKf0fbufraERERE4yfXosa9a0ARwrVrTG\nz28+zpGrh59fLCtWZPSxZk3rXM1Wh4SEsHfvXtLT0095bceOHYSEhHi2a9eunW0/27dvP+n18847\nj+Dg4NOeu3r16p7n/v7+JCYmAhmDxnbt2lGzZk0CAwN56qmnThrcn0n58uWpW7cul112WbZt4uLi\nWL58OUFBQQQFBVGlShUmTpzIrl27zvjewsPDs/3icvw979ixI8fxepP1s+7Ro4dnoDxx4kRuu+02\nypUrx549e0hKSuKqq67yvJebb77ZM7gvLjSoLgR+ePY/uCO7aP/aZ5zhQl3JIjIy0tchSCGkvBBv\nlBd5c3yGOSmpVeae1jRtGkN6umFGjh7p6UbTprFARh9JSa1zNVvdrFkzypUrx4wZM07an5iYyLx5\n805aTeN0K17UrFmTbdu2ebb//PPPPA/s7r//fi699FI2bdrEwYMHGTFiRL5frFe7dm0iIyPZv38/\n+/fv58CBAxw+fJjXXnvtlLY1a9Zk69atnu24uLhsP4tLLrmE2rVrM3369GzPXaFCBZKSkjzb3gbg\nWftv2bIle/bsYfXq1UyePNlTfhMSEoK/vz+//PKL570cPHjwjCu3FDUaVPuQmTG0/9PUfG4Yk9sN\n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\nrHH06NGDZ555huuuu46jR496/m3Url2byMhIYmNjzxibnKxIzlTn1ZgxT7B48TMsWhTteSxe/Eye\nB+kiIiLF3Ymz1ECeZprPto/169czevRoz8B569atTJo0iWbNmnna7N69m1dffZXU1FSmTp3KunXr\nuPXWW6lVqxbXXHMNgwYN4ujRo/z000+MHTuWu+66C8goG9m8eXOuylEeffRRvvjiC9asWQNAYmIi\nVapUoUyZMnz77bcn1StXrVoVPz8/Nm3a5NnXt29fnn32WX799VcADh06xLRp3m82d+ONN9KyZUs6\nduzIDz/8QFpaGomJibz99tuMGzcOgEaNGjF58mRSU1NZuXLlKX15e2+33HILcXFxDB06lG7d/lo+\nuG3btmzYsIEJEyaQmppKSkoKK1euVE11DhTJmWqR4zTrJN4oL8Qb5UXerPn6axIbN2bZCTOdZkbF\npUtp3bnzOemjUqVKrFixgtGjR3Po0CECAwNp164dL774oqdN06ZN+e233wgJCaFGjRpMnz6dwMBA\nIKO8oW/fvoSGhhIUFMTw4cNp0aIFALfffjsTJkwgODiYCy64gJUrV55y/qyzvCEhIfTu3Zthw4Yx\ndepUXn/9dR577DH69etHREQE3bp181wked555/HUU0/RvHlzUlNTiYmJ4bbbbuPIkSN0796dLVu2\nULlyZVq2bEmXLl28vv9p06YxYsQIunXrxs6dOwkJCaFly5YMHToUgOHDh9OjRw+CgoKIiIjgzjvv\nZP/+/dnGD1C2bFk6derEBx98cNLygBUrVmT+/Pn079+fAQMGYGY0bNiQ0aNHn/H/U0lXrG5TLiIi\nInlTlG9TPn78eMaOHetZaUMkp3SbcpFMixYt8nUIUggpL8Qb5YWIFCQNqkVEREREzpLKP0RERKRI\nl3+I5JXKP0REREREChENqqVIU42keKO8EG+UFyJSkDSoFhERERE5S6qpFhEREdVUS4mUnzXVuvmL\niIiIEB4enqdbhosUZeHh4fnWV4GXfzjn2jjn1jnnNjjnnsymzX+dc78551Y55xoVdExSfKhGUrxR\nXog3yovTO36r7pL2+Oqrr3wegx6+e2zevDnf/g0V6KDaOecHvAa0BhoAPZxz9bO0uRm40MwuBvoC\nbxVkTFK8rFq1ytchSCGkvBBvlBfijfJC8ktBz1Q3AX4zszgzSwEmAx2ytOkAfAhgZiuAys656gUc\nlxQTBw8e9HUIUggpL8Qb5YV4o7yQ/FLQg+rzga0nbG/L3He6NvFe2oiIiIiIFFpaUk+KtPyshZLi\nQ3kh3igvxBvlheSXAl1Szzl3NRBtZm0ytwcCZmYvnNDmLeArM/skc3sdEGFmu7L0pXV+REREROSc\nsEK2pN53wEXOuXBgB9Ad6JGlzSzgQeCTzEH4wawDasj9GxMREREROVcKdFBtZmnOuX7AfDJKTcaa\n2VrnXN+Ml+0dM/vcOXeLc24jcAToU5AxiYiIiIjktyJzR0URERERkcKqSFyomJMbyEjx55wb65zb\n5Zz76YR9VZxz851z651zsc65yr6MUc4t51wt59yXzrlfnHNrnHMPZ+5XXpRgzrlyzrkVzrkfM/Pi\n6cz9ygvBOefnnPvBOTcrc1t5UcI55zY751Zn/sz4NnNfrvOi0A+qc3IDGSkxPiAjD040EFhgZpcA\nXwKDznlU4kupwAAzawA0Ax7M/PmgvCjBzOwo0MLMrgAaATc755qgvJAMjwC/nrCtvJB0INLMrjCz\nJpn7cp0XhX5QTc5uICMlgJktBQ5k2d0BGJ/5fDxw2zkNSnzKzHaa2arM54nAWqAWyosSz8ySMp+W\nI+P6IUN5UeI552oBtwDvnbBbeSGOU8fEuc6LojCozskNZKTkqnZ8tRgz2wlU83E84iPOuTpkzEou\nB6orL0q2zD/x/wjsBL4ws+9QXgiMAZ4g40vWccoLMeAL59x3zrl7MvflOi8Kekk9kXNNV96WQM65\nisA04BEzS/Syrr3yooQxs3TgCudcAPCpc64Bp+aB8qIEcc7dCuwys1XOucjTNFVelDzNzWyHc64q\nMN85t548/LwoCjPV8UDYCdu1MveJAOxyzlUHcM7VAHb7OB45x5xzpckYUH9kZjMzdysvBAAzOwws\nAtqgvCjpmgPtnXO/A5OAG5xzHwE7lRclm5ntyPzvHuAzMkqPc/3zoigMqj03kHHOlSXjBjKzfByT\n+I7LfBw3C4jKfN4bmJn1ACn23gd+NbNXTtinvCjBnHMhx6/Ud86dB7Qko95eeVGCmdlgMwszswvI\nGEt8aWZ3AbNRXpRYzjn/zL924pyrALQC1pCHnxdFYp1q51wb4BX+uoHM8z4OSXzAOTcRiASCgV3A\n02R8o5wK1AbigK5mdtBXMcq55ZxrDiwh4wegZT4GA98CU1BelEjOub+TcWGRX+bjEzMb4ZwLQnkh\ngHMuAnjMzNorL0o251xd4FMyfn+UBj42s+fzkhdFYlAtIiIiIlKYFYXyDxERERGRQk2DahERERGR\ns6RBtYiIiIjIWdKgWkRERETkLGlQLSIiIiJyljSoFhERERE5SxpUi4jkgXMuyDn3o3PuB+fcDufc\ntsznPzrnlhbA+Ro6527O737PcM4Ozrn6eTiupnNuSubzcx63iIgvlPZ1ACIiRZGZ7QeuAHDODQUS\nzWx0AZ6yEdAYmFeA58jqNmAOsC6nBzjnSmXe8rdr5i5fxC0ics5pplpE5Oy5kzacS8j8b4RzbpFz\n7jPn3Ebn3HPOuTuccyucc6sz7+R1/Lba0zL3r3DOXZOlvzLAMKBr5mz47c65Ks65TzP7+SbzLoJk\nOa53Zpv5zrnfnXMPOuf6Z/bxjXMuMLPdPc65bzNn2ac658o755oB7YEXM9tf4Jz7yjl3ZeYxwc65\nP044z0zn3EJggXMu3Dm3xjlXOkvcXZ1zG5xzwZnHOefcb8e3RUSKMg2qRUTy34m3qr0cuBe4DLgL\nuNjMmgJjgYcy27wCjM7c3wV476TOzFKAoWTcbvtKM5sKPAP8YGYNgaeAD7OJpQEZM85NgBFkzKhf\nCSwHemW2mW5mTczsCjJmpf9pZsuAWcATmef8/Qzv8wqgk5m1+CtsS80S9xTgI6BnZpubgFVmti+b\n2EVEigyVf4iIFKzvzGw3gHNuEzA/c/8aIDLz+U3Apc654zPeFZ1z/maWdJp+rwU6AZjZV5k13hXN\nLDFLu68y+0lyzh0ko5zj+PmPz25f7pwbDgQCFYDYPLzPL8zsUA7afQB8RsYXibszt0VEijwNqkVE\nCtbRE56nn7Cdzl8/gx3QNHNGOqcsy7bz2urk81s25/8AaG9mPzvnegMR2fSVyl9/4Syf5bUjZ4wY\nMLNtzrldzrkWwD+AO3JynIhIYafyDxGR/JfdADc784FHPAc719BLmwQg4ITt/5FZRuGciwT2eJml\nzqmKwM7M2u07T3POP8i46BDg9hz2nbUPyCh9mQBMMbOsXw5ERIokDapFRPJfdgPF7PY/AjTOvOjw\nZ6CvlzZfAZcdv1ARiAaucs6tBp4Fep9FXEOBb8kYqK89Yf9k4Ann3PeZF1W+BNzvnPseCMrB+bzF\nDRm12hWAcTnsQ0Sk0HOaJBARkXPJOdcYeMnMsiszEREpclRTLSIi54xz7kngPlRLLSLFjGaqRURE\nRETOkmqqRURERETOkgbVIiIiIiJnSYNqEREREZGzpEG1iIiIiMhZ0qBaREREROQsaVAtIiIiInKW\n/h8egHwv0/Kp+QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a328261208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xlabel('Time to maturity'), ylabel('Yield to maturity'), grid(True)\n",
    "plot(tr, array(yr)*100, marker='^', label='Original Yield Curve')\n",
    "plot(t, array(y)*100, marker='^', label='Interpolated Yield Curve')\n",
    "plot(t, array(s)*100, marker='^', label='Spot Rate Curve')\n",
    "legend(loc=4), show();"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [Root]",
   "language": "python",
   "name": "Python [Root]"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
